package com.haiyou.data.common.persister.mysql.annotation;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 数据库配置,默认使用myisam引擎，如果升级到8.0以及以上版本只支持innodb
 * 
 * @author xingyuan
 *
 */
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@Inherited
@Documented
public @interface Database {

	String HELPDB = "mysql";

	/**
	 * 数据库别名,必须小写，真实名在配置种url里填写，这样可以支持一个物理机器部署多个逻辑库，数据完全隔离
	 * 
	 * @return
	 */
	String alias();

	String engine() default "innodb";// "innodb";//支持事务，如果升级到8.0以及以上版本只支持innodb

	String charset() default "utf8mb4";// "utf8mb4";//支持emoji表情符

	String collate() default "utf8mb4_general_ci";// "utf8mb4_general_ci";//支持emoji表情符

	/** 连接池 */
	ConnectionPool connectionPool() default ConnectionPool.HIKARI;

	/**
	 * 分库数量
	 * 
	 * @return
	 */
	int cluster() default 1;

	/** 数据源-连接池 */
	enum ConnectionPool {
		HIKARI, DRUID, DBCP2;
	}

}
